package com.mata.worktime.util;

import com.mata.worktime.dto.WeekDTO;

import java.text.SimpleDateFormat;
import java.util.Calendar;


/**
 * 周工具类
 *
 * @author earthchen
 * @date 2018/10/8
 **/
public class WeekUtils
{

    /**
     * 获取当前(上，下)周的日期范围如：...,-1上一周，0本周，1下一周...
     *
     * @param i
     */
    public static WeekDTO getWeekDays(int i)
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // getTimeInterval(sdf);

        Calendar calendar1 = Calendar.getInstance();

//        calendar1.setTime(curDate);
        // 设置一个星期的第一天，按中国的习惯一个星期的第一天是星期一
        calendar1.setFirstDayOfWeek(Calendar.MONDAY);

        // 判断要计算的日期是否是周日，如果是则减一天计算周六的，否则会出问题，计算到下一周去了
        int dayOfWeek = calendar1.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
        if (1 == dayOfWeek)
        {
            calendar1.add(Calendar.DAY_OF_MONTH, -1);
        }

        // 获得当前日期是一个星期的第几天
        int day = calendar1.get(Calendar.DAY_OF_WEEK);

        //获取当前日期前（下）x周同星几的日期
        calendar1.add(Calendar.DATE, 7 * i);

        calendar1.add(Calendar.DATE, calendar1.getFirstDayOfWeek() - day);

        String beginDate = sdf.format(calendar1.getTime());
        calendar1.add(Calendar.DATE, 6);
        String endDate = sdf.format(calendar1.getTime());
        WeekDTO week = new WeekDTO();
        week.setStartDate(DateUtils.dateTime(DateUtils.YYYY_MM_DD, beginDate));
        week.setEndDate(DateUtils.dateTime(DateUtils.YYYY_MM_DD, endDate));
//        System.out.println(beginDate + " 到 " + endDate);
        return week;
    }

    public static void main(String[] args)
    {

//        System.out.println(getWeekDays(-2));
//        getWeekDays(-1);
//        getWeekDays(0);
//        getWeekDays(1);
//        getWeekDays(2);
    }
}
